Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2011, 23:46
Новичок на форуме
Отправить личное сообщение для pagal Посмотреть профиль Найти все сообщения от pagal
 
Регистрация: 28.09.2011
Сообщений: 8

JS внутри AJAX
Подскажите пожалуйста, как подключить JS внутри подгружаемых страниц через AJAX ( http://www.serpere.info/jquery-histo...ples/mvc/#1,1a - по такому принципу ). Даже

<script type='text/javascript'>
alert ('бла бла бла");
</script>


не работает. Подскажите пожалуйста решение.
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2011, 13:50
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Если вы вставляете html через innerHTML, то содержащийся внутри HTML js не будет выполнен. Если же вставить его через append метод jQuery, например, то jQuery найдет тег script и выполнит его.
var o = document.createElement('div');
o.innerHTML = '<script type="text/javascript">alert("hello")</script>';
document.body.appendChild(o);
jQuery(document.body).append(o);

P.S. Кажется я учу плохому. Если вы передаете через ajax html это проблема, если передаете через него html + js это уже беда. Трижды подумайте прежде чем так делать.

Последний раз редактировалось da_ff, 29.09.2011 в 13:52.
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2011, 20:00
Новичок на форуме
Отправить личное сообщение для pagal Посмотреть профиль Найти все сообщения от pagal
 
Регистрация: 28.09.2011
Сообщений: 8

хотелось бы чтобы именно с этими скриптами AJAX сделать ( http://www.serpere.info/jquery-histo...ples/mvc/#1,1a ). Тоесть получается никак не подключишь тут JS? Или все такие есть способ?
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2011, 21:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

лэхко

эвальте их дело в шляпе

написано с опорой на великий Prototype.js
function evalScripts( string ){
    
    var reg = '<script[^>]*>([\\S\\s]*?)<\/script>',
        matchAll = new RegExp( reg,'img'),
        matchOne = new RegExp( reg,'im'); 
    
    evalScripts=function(string){
        
        var all=string.match(matchAll)||[],i=0;
        
        while(all[i])
            new Function("", (all[i++].match(matchOne)||['', ''])[1] )();
        
    }
    evalScripts(string);
}


пример, функция сжата
function evalScripts(d){var e=RegExp("<script[^>]*>([\\S\\s]*?)<\/script>","img"),f=/<script[^>]*>([\S\s]*?)<\/script>/im;evalScripts=function(b){for(var b=b.match(e)||[],c=0;b[c];)(new Function("",(b[c++].match(f)||["",""])[1]))()};evalScripts(d)}


evalScripts("тут скриптов нет"); // ничего не выдаст
evalScripts("adb<script>alert('тут один скрипт')</"+"script>kjkj");
evalScripts("adb<script>alert('А тут два. Это первый')</"+"script>kjkj<script>alert('Это второй')</"+"script>");
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2011, 11:12
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

pagal,
Судя по url'у страницы это плагин к jq. В чем пробелма использоваться метод .append?
Ответить с цитированием
  #6 (permalink)  
Старый 09.10.2011, 03:11
Новичок на форуме
Отправить личное сообщение для pagal Посмотреть профиль Найти все сообщения от pagal
 
Регистрация: 28.09.2011
Сообщений: 8

через .append не работает, через вариант melky работают тока самые простые, такие как alert, а мне хотелось бы подключить чтото типа галереи, если есть такая возможность, подскажите пожалуйста.

Последний раз редактировалось pagal, 09.10.2011 в 03:52.
Ответить с цитированием
  #7 (permalink)  
Старый 10.10.2011, 10:51
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

pagal,
Чего ты мне рассказываешь? Все работает через append. Только что проверил.
Ответить с цитированием
  #8 (permalink)  
Старый 10.10.2011, 23:06
Новичок на форуме
Отправить личное сообщение для pagal Посмотреть профиль Найти все сообщения от pagal
 
Регистрация: 28.09.2011
Сообщений: 8

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
		$(function() {
			$('#gallery').append('<script type="text/javascript" src="js/gallery.js"></script>');
		});
	</script>

Сделала так, #gallery находится в подгружаемом через ajax файле, если работает append, тогда подскажите где ошиблась.
Ответить с цитированием
  #9 (permalink)  
Старый 11.10.2011, 11:19
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Цитата:
#gallery находится в подгружаемом через ajax файле
Если его не внутри document, то соответственно append не отработает.
Если сделать например
jQuery(document.body).append('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>');
то новый скрипт присоединится к странице и выполнится. Можно убедиться в firebug'е на вкладке net.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вакансия: Front-end разработчик (HTML, CSS, JS, Ajax, jQuery) ivankov Работа 0 05.10.2010 19:00
Как передать массив из PHP в js (AJAX) Александр Иванов Общие вопросы Javascript 7 10.09.2009 10:22
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Ajax. Полноценная подгрузка страниц, содержащих CSS и JS. Alex22 AJAX и COMET 6 05.11.2008 23:53
ajax запрос с подгружемным js HelpeR AJAX и COMET 1 27.10.2008 12:44